home *** CD-ROM | disk | FTP | other *** search
/ Windows 6-Pak - Disc 5 / Windows 6-Pak (InfoMagic) (Disc 5) (1999).ISO / C&C++Tools / BVCW95.ZIP / INCLUDE.ZIP / VFMATH.H < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-04  |  24.6 KB  |  463 lines

  1. /*  VFmath.h
  2.  
  3.   vector management functions:
  4.   math functions performed on each individual element of an
  5.   array or vector of the data type "float";   real numbers
  6.  
  7.   Copyright (c) 1996-1999 by Martin Sander
  8.   All Rights Reserved.
  9. */
  10.  
  11. #ifndef __VFMATH_H
  12. #define __VFMATH_H
  13.  
  14. #ifndef __VFSTD_H 
  15. #include <VFstd.h>
  16. #endif
  17.  
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21.  
  22.  
  23.  
  24. /**************************  Rounding **********************************/
  25.  
  26. int  __vf   VF_round(  fVector  Y, fVector X, ui size );
  27. int  __vf   VF_roundtoBI( biVector Y, fVector X, ui size );
  28. int  __vf   VF_roundtoSI( siVector Y, fVector X, ui size );
  29. int  __vf   VF_roundtoI(  iVector  Y, fVector X, ui size );
  30. int  __vf   VF_roundtoLI( liVector Y, fVector X, ui size );
  31. int  __vf   VF_roundtoQI( qiVector Y, fVector X, ui size );
  32. int  __vf   VF_roundtoUB( ubVector Y, fVector X, ui size );
  33. int  __vf   VF_roundtoUS( usVector Y, fVector X, ui size );
  34. int  __vf   VF_roundtoU(  uVector  Y, fVector X, ui size );
  35. int  __vf   VF_roundtoUL( ulVector Y, fVector X, ui size );
  36.  
  37. int  __vf   VF_floor(  fVector  Y, fVector X, ui size );
  38. int  __vf   VF_floortoBI( biVector Y, fVector X, ui size );
  39. int  __vf   VF_floortoSI( siVector Y, fVector X, ui size );
  40. int  __vf   VF_floortoI(  iVector  Y, fVector X, ui size );
  41. int  __vf   VF_floortoLI( liVector Y, fVector X, ui size );
  42. int  __vf   VF_floortoQI( qiVector Y, fVector X, ui size );
  43. int  __vf   VF_floortoUB( ubVector Y, fVector X, ui size );
  44. int  __vf   VF_floortoUS( usVector Y, fVector X, ui size );
  45. int  __vf   VF_floortoU(  uVector  Y, fVector X, ui size );
  46. int  __vf   VF_floortoUL( ulVector Y, fVector X, ui size );
  47.  
  48. int  __vf   VF_ceil(  fVector  Y, fVector X, ui size );
  49. int  __vf   VF_ceiltoBI( biVector Y, fVector X, ui size );
  50. int  __vf   VF_ceiltoSI( siVector Y, fVector X, ui size );
  51. int  __vf   VF_ceiltoI(  iVector  Y, fVector X, ui size );
  52. int  __vf   VF_ceiltoLI( liVector Y, fVector X, ui size );
  53. int  __vf   VF_ceiltoQI( qiVector Y, fVector X, ui size );
  54. int  __vf   VF_ceiltoUB( ubVector Y, fVector X, ui size );
  55. int  __vf   VF_ceiltoUS( usVector Y, fVector X, ui size );
  56. int  __vf   VF_ceiltoU(  uVector  Y, fVector X, ui size );
  57. int  __vf   VF_ceiltoUL( ulVector Y, fVector X, ui size );
  58.  
  59. int  __vf   VF_chop(  fVector  Y, fVector X, ui size );
  60. int  __vf   VF_choptoBI( biVector Y, fVector X, ui size );
  61. int  __vf   VF_choptoSI( siVector Y, fVector X, ui size );
  62. int  __vf   VF_choptoI(  iVector  Y, fVector X, ui size );
  63. int  __vf   VF_choptoLI( liVector Y, fVector X, ui size );
  64. int  __vf   VF_choptoQI( qiVector Y, fVector X, ui size );
  65. int  __vf   VF_choptoUB( ubVector Y, fVector X, ui size );
  66. int  __vf   VF_choptoUS( usVector Y, fVector X, ui size );
  67. int  __vf   VF_choptoU(  uVector  Y, fVector X, ui size );
  68. int  __vf   VF_choptoUL( ulVector Y, fVector X, ui size );
  69.  
  70. #define VF_trunc      VF_chop
  71. #define VF_trunctoBI  VF_choptoBI
  72. #define VF_trunctoSI  VF_choptoSI
  73. #define VF_trunctoI   VF_choptoI
  74. #define VF_trunctoLI  VF_choptoLI
  75. #define VF_trunctoQI  VF_choptoQI
  76. #define VF_trunctoUB  VF_choptoUB
  77. #define VF_trunctoUS  VF_choptoUS
  78. #define VF_trunctoU   VF_choptoU
  79. #define VF_trunctoUL  VF_choptoUL
  80.  
  81. #if defined V_HUGE
  82.       #define   VF_roundtoUI    VF_roundtoUL
  83.       #define   VF_floortoUI    VF_floortoUL
  84.       #define   VF_ceiltoUI     VF_ceiltoUL
  85.       #define   VF_choptoUI     VF_choptoUL
  86.       #define   VF_trunctoUI    VF_trunctoUL
  87. #else
  88.       #define   VF_roundtoUI    VF_roundtoU
  89.       #define   VF_floortoUI    VF_floortoU
  90.       #define   VF_ceiltoUI     VF_ceiltoU
  91.       #define   VF_choptoUI     VF_choptoU
  92.       #define   VF_trunctoUI    VF_trunctoU
  93. #endif
  94.  
  95. /********************  Comparisons ********************************/
  96.  
  97. void __vf   VF_cmp0(    fVector Y, fVector X, ui size );
  98. ui   __vf   VF_cmp_eq0( fVector Y, fVector X, ui size );
  99. ui   __vf   VF_cmp_ne0( fVector Y, fVector X, ui size );
  100. ui   __vf   VF_cmp_le0( fVector Y, fVector X, ui size );
  101. ui   __vf   VF_cmp_lt0( fVector Y, fVector X, ui size );
  102. ui   __vf   VF_cmp_ge0( fVector Y, fVector X, ui size );
  103. ui   __vf   VF_cmp_gt0( fVector Y, fVector X, ui size );
  104.  
  105. ui   __vf   VF_cmp_eq0ind( uiVector Ind, fVector X, ui size );
  106. ui   __vf   VF_cmp_ne0ind( uiVector Ind, fVector X, ui size );
  107. ui   __vf   VF_cmp_le0ind( uiVector Ind, fVector X, ui size );
  108. ui   __vf   VF_cmp_lt0ind( uiVector Ind, fVector X, ui size );
  109. ui   __vf   VF_cmp_ge0ind( uiVector Ind, fVector X, ui size );
  110. ui   __vf   VF_cmp_gt0ind( uiVector Ind, fVector X, ui size );
  111.  
  112. void __vf   VF_cmpC(    fVector Y, fVector X, ui size, float C );
  113. ui   __vf   VF_cmp_eqC( fVector Y, fVector X, ui size, float C );
  114. ui   __vf   VF_cmp_neC( fVector Y, fVector X, ui size, float C );
  115. ui   __vf   VF_cmp_leC( fVector Y, fVector X, ui size, float C );
  116. ui   __vf   VF_cmp_ltC( fVector Y, fVector X, ui size, float C );
  117. ui   __vf   VF_cmp_geC( fVector Y, fVector X, ui size, float C );
  118. ui   __vf   VF_cmp_gtC( fVector Y, fVector X, ui size, float C );
  119.  
  120. ui   __vf   VF_cmp_eqCind( uiVector Ind, fVector X, ui size, float C );
  121. ui   __vf   VF_cmp_neCind( uiVector Ind, fVector X, ui size, float C );
  122. ui   __vf   VF_cmp_leCind( uiVector Ind, fVector X, ui size, float C );
  123. ui   __vf   VF_cmp_ltCind( uiVector Ind, fVector X, ui size, float C );
  124. ui   __vf   VF_cmp_geCind( uiVector Ind, fVector X, ui size, float C );
  125. ui   __vf   VF_cmp_gtCind( uiVector Ind, fVector X, ui size, float C );
  126.  
  127. void __vf   VF_cmpV(    fVector Z, fVector X, fVector Y, ui size );
  128. ui   __vf   VF_cmp_eqV( fVector Z, fVector X, fVector Y, ui size );
  129. ui   __vf   VF_cmp_neV( fVector Z, fVector X, fVector Y, ui size );
  130. ui   __vf   VF_cmp_leV( fVector Z, fVector X, fVector Y, ui size );
  131. ui   __vf   VF_cmp_ltV( fVector Z, fVector X, fVector Y, ui size );
  132. ui   __vf   VF_cmp_geV( fVector Z, fVector X, fVector Y, ui size );
  133. ui   __vf   VF_cmp_gtV( fVector Z, fVector X, fVector Y, ui size );
  134.  
  135. ui   __vf   VF_cmp_eqVind( uiVector Ind, fVector X, fVector Y, ui size );
  136. ui   __vf   VF_cmp_neVind( uiVector Ind, fVector X, fVector Y, ui size );
  137. ui   __vf   VF_cmp_leVind( uiVector Ind, fVector X, fVector Y, ui size );
  138. ui   __vf   VF_cmp_ltVind( uiVector Ind, fVector X, fVector Y, ui size );
  139. ui   __vf   VF_cmp_geVind( uiVector Ind, fVector X, fVector Y, ui size );
  140. ui   __vf   VF_cmp_gtVind( uiVector Ind, fVector X, fVector Y, ui size );
  141.  
  142. ui   __vf   VF_cmp_inclrange0C( fVector Y, fVector X, ui size, float C );
  143. ui   __vf   VF_cmp_exclrange0C( fVector Y, fVector X, ui size, float C );
  144. ui   __vf   VF_cmp_inclrangeCC( fVector Y, fVector X, ui size, float CLo, float CHi );
  145. ui   __vf   VF_cmp_exclrangeCC( fVector Y, fVector X, ui size, float CLo, float CHi );
  146.  
  147. ui   __vf   VF_cmp_inclrange0Cind( uiVector Ind, fVector X, ui size, float C );
  148. ui   __vf   VF_cmp_exclrange0Cind( uiVector Ind, fVector X, ui size, float C );
  149. ui   __vf   VF_cmp_inclrangeCCind( uiVector Ind, fVector X, ui size, float CLo, float CHi );
  150. ui   __vf   VF_cmp_exclrangeCCind( uiVector Ind, fVector X, ui size, float CLo, float CHi );
  151.  
  152.  
  153. /********************  Standard Arithmetics   ***************************/
  154.  
  155. void  __vf  VF_equC( fVector X, ui size, float C );
  156. void  __vf  VF_equV( fVector Y, fVector X, ui size );
  157. void  __vf  VFx_equV( fVector Y, fVector X, ui size, float A, float B );
  158.  
  159. void  __vf  VF_addC(  fVector Y, fVector X, ui size, float C );
  160. void  __vf  VF_subC(  fVector Y, fVector X, ui size, float C );
  161. void  __vf  VF_subrC( fVector Y, fVector X, ui size, float C );
  162. void  __vf  VF_mulC(  fVector Y, fVector X, ui size, float C );
  163. void  __vf  VF_divC(  fVector Y, fVector X, ui size, float C );
  164. void  __vf  VF_divrC( fVector Y, fVector X, ui size, float C );
  165. void  __vf  VFx_divrC( fVector Y, fVector X, ui size, float A, float B, float C );
  166.  
  167. void  __vf  VF_addV(  fVector Z, fVector X, fVector Y, ui size );
  168. void  __vf  VF_subV(  fVector Z, fVector X, fVector Y, ui size );
  169. void  __vf  VF_subrV( fVector Z, fVector X, fVector Y, ui size );
  170. void  __vf  VF_mulV(  fVector Z, fVector X, fVector Y, ui size );
  171. void  __vf  VF_divV(  fVector Z, fVector X, fVector Y, ui size );
  172. void  __vf  VF_divrV( fVector Z, fVector X, fVector Y, ui size );
  173.  
  174. void  __vf  VFx_addV(  fVector Z, fVector X, fVector Y, ui size, float A, float B );
  175.                               /* Z = (A*X+B) + Y  */
  176. void  __vf  VFx_subV(  fVector Z, fVector X, fVector Y, ui size, float A, float B );
  177. void  __vf  VFx_subrV( fVector Z, fVector X, fVector Y, ui size, float A, float B );
  178. void  __vf  VFx_mulV(  fVector Z, fVector X, fVector Y, ui size, float A, float B );
  179. void  __vf  VFx_divV(  fVector Z, fVector X, fVector Y, ui size, float A, float B );
  180. void  __vf  VFx_divrV( fVector Z, fVector X, fVector Y, ui size, float A, float B );
  181.  
  182. void  __vf  VFs_addV( fVector Z, fVector X, fVector Y, ui size, float C ); /* Z=C*(X+Y) */
  183. void  __vf  VFs_subV( fVector Z, fVector X, fVector Y, ui size, float C );
  184. void  __vf  VFs_mulV( fVector Z, fVector X, fVector Y, ui size, float C );
  185. void  __vf  VFs_divV( fVector Z, fVector X, fVector Y, ui size, float C );
  186.  
  187. void  __vf  VF_maxC(   fVector Y, fVector X, ui size, float C );
  188. void  __vf  VF_minC(   fVector Y, fVector X, ui size, float C );
  189. void  __vf  VF_limit(  fVector Y, fVector X, ui size, float Min, float Max );
  190. void  __vf  VF_flush0( fVector Y, fVector X, ui size, float AbsMin );
  191. void  __vf  VF_maxV(   fVector Z, fVector X, fVector Y, ui size );
  192. void  __vf  VF_minV(   fVector Z, fVector X, fVector Y, ui size );
  193. void  __vf  VF_modC(   fVector Y, fVector X, ui size, float C );
  194. void  __vf  VF_modV(   fVector Z, fVector X, fVector Y, ui size );
  195. void  __vf  VFx_modV(  fVector Z, fVector X, fVector Y, ui size, float A, float B );
  196. #define     VF_fmodC    VF_modC
  197. #define     VF_fmodV    VF_modV
  198. #define     VFx_fmodV   VFx_modV
  199.  
  200. void __vf  VF_redC(  fVector Y, fVector X, ui size, float C );
  201. void __vf  VF_redV(  fVector Z, fVector X, fVector Y, ui size );
  202. void __vf  VFx_redV( fVector Z, fVector X, fVector Y, ui size, float A, float B );
  203. void __vf  VF_visC(  fVector Y, fVector X, ui size, float C );
  204. void __vf  VF_visV(  fVector Z, fVector X, fVector Y, ui size );
  205. void __vf  VFx_visV( fVector Z, fVector X, fVector Y, ui size, float A, float B );
  206. void __vf  VF_hypC(  fVector Y, fVector X, ui size, float C );
  207. void __vf  VF_hypV(  fVector Z, fVector X, fVector Y, ui size );
  208. void __vf  VFx_hypV( fVector Z, fVector X, fVector Y, ui size, float A, float B );
  209.  
  210. void __vf VF_lincomb( fVector Z, fVector X, fVector Y, ui size,
  211.                       float CX, float CY );  /* Z=CX*X+CY*Y */
  212.  
  213. #define VF_sgn    VF_cmp0
  214.  
  215. /******************** Accumulation (Y += X) ******************************/
  216.  
  217. void __vf VF_accV(   fVector Y, fVector  X, ui size );
  218. void __vf VF_accVBI( fVector Y, biVector X, ui size );
  219. void __vf VF_accVSI( fVector Y, siVector X, ui size );
  220. void __vf VF_accVI(  fVector Y, iVector  X, ui size );
  221. void __vf VF_accVLI( fVector Y, liVector X, ui size );
  222. void __vf VF_accVQI( fVector Y, qiVector X, ui size );
  223. void __vf VF_accVUB( fVector Y, ubVector X, ui size );
  224. void __vf VF_accVUS( fVector Y, usVector X, ui size );
  225. void __vf VF_accVU(  fVector Y, uVector  X, ui size );
  226. void __vf VF_accVUL( fVector Y, ulVector X, ui size );
  227. #if defined V_HUGE
  228.     #define VF_accVUI  VF_accVUL
  229. #else
  230.     #define VF_accVUI  VF_accVU
  231. #endif
  232.  
  233. /***************** Functions of a sub-set of elements  ********************/
  234.  
  235. void  __vf  VF_subvector_equC(  fVector Y, ui subsiz, unsigned samp, float C );
  236. void  __vf  VF_subvector_equV(  fVector Y, ui subsiz, unsigned samp, fVector X );
  237.  
  238. void  __vf  VF_subvector_addC(  fVector Y, ui subsiz, unsigned samp, float C );
  239. void  __vf  VF_subvector_subC(  fVector Y, ui subsiz, unsigned samp, float C );
  240. void  __vf  VF_subvector_subrC( fVector Y, ui subsiz, unsigned samp, float C );
  241. void  __vf  VF_subvector_mulC(  fVector Y, ui subsiz, unsigned samp, float C );
  242. void  __vf  VF_subvector_divC(  fVector Y, ui subsiz, unsigned samp, float C );
  243. void  __vf  VF_subvector_divrC( fVector Y, ui subsiz, unsigned samp, float C );
  244.  
  245. void  __vf  VF_subvector_addV(  fVector Y, ui subsiz, unsigned samp, fVector X );
  246. void  __vf  VF_subvector_subV(  fVector Y, ui subsiz, unsigned samp, fVector X );
  247. void  __vf  VF_subvector_subrV( fVector Y, ui subsiz, unsigned samp, fVector X );
  248. void  __vf  VF_subvector_mulV(  fVector Y, ui subsiz, unsigned samp, fVector X );
  249. void  __vf  VF_subvector_divV(  fVector Y, ui subsiz, unsigned samp, fVector X );
  250. void  __vf  VF_subvector_divrV( fVector Y, ui subsiz, unsigned samp, fVector X );
  251.  
  252.  
  253.  
  254. /*********************  Mathematical Functions ***********************/
  255.  
  256. int   __vf   VF_abs( fVector Y, fVector X, ui size );
  257. int   __vf   VF_neg( fVector Y, fVector X, ui size );
  258. int   __vf   VF_inv( fVector Y, fVector X, ui size );
  259. int   __vf   VFx_inv( fVector Y, fVector X, ui size, float A, float B );
  260. int   __vf   VF_intfrac( fVector Int, fVector Frac, fVector X, ui size );
  261. #define      VF_modf    VF_intfrac
  262. int   __vf   VF_mantexp( fVector Mant, iVector Exp, fVector X, ui size );
  263. #define      VF_frexp   VF_mantexp
  264.  
  265. int  __vf    VF_hypotC( fVector Y, fVector X, ui size, float C );
  266. int  __vf    VF_hypotV( fVector Z, fVector X, fVector Y, ui size );
  267. int  __vf    VFx_hypotV( fVector Z, fVector X, fVector Y, ui size, float A, float B );
  268.  
  269. int  __vf    VF_scale2( fVector Y, fVector X, ui size, int expo );
  270. int  __vf    VF_scale10( fVector Y, fVector X, ui size, int expo );
  271. #define      VF_ldexp    VF_scale2
  272.  
  273. int  __vf    VF_square( fVector Y, fVector X, ui size );
  274. int  __vf    VFx_square( fVector Y, fVector X, ui size, float A, float B );
  275. int  __vf    VF_cubic( fVector Y, fVector X, ui size );
  276. int  __vf    VFx_cubic( fVector Y, fVector X, ui size, float A, float B );
  277. int  __vf    VF_quartic( fVector Y, fVector X, ui size );
  278. int  __vf    VFx_quartic( fVector Y, fVector X, ui size, float A, float B );
  279. int  __vf    VF_poly( fVector Y, fVector X, ui size, fVector Coeff, unsigned deg );
  280. int  __vf    VFx_poly( fVector Y, fVector X, ui size, fVector Coeff, unsigned deg, float A, float B );
  281. int  __vf    VF_ipow( fVector Y, fVector X, ui size, int ipow );
  282. int  __vf    VFx_ipow( fVector Y, fVector X, ui size, int ipow, float A, float B, float C );
  283.                            /*  ipow = integer power of x */
  284.  
  285.        /* extra fast integer powers: "unprotected", without error handling: */
  286. int  __vf    VFu_square( fVector Y, fVector X, ui size );
  287. int  __vf    VFux_square( fVector Y, fVector X, ui size, float A, float B );
  288. int  __vf    VFu_cubic( fVector Y, fVector X, ui size );
  289. int  __vf    VFux_cubic( fVector Y, fVector X, ui size, float A, float B );
  290. int  __vf    VFu_quartic( fVector Y, fVector X, ui size );
  291. int  __vf    VFux_quartic( fVector Y, fVector X, ui size, float A, float B );
  292. int  __vf    VFu_poly( fVector Y, fVector X, ui size, fVector Coeff, unsigned deg );
  293. int  __vf    VFux_poly( fVector Y, fVector X, ui size, fVector Coeff, unsigned deg, float A, float B );
  294. int  __vf    VFu_ipow( fVector Y, fVector X, ui size, int ipow );
  295. int  __vf    VFux_ipow( fVector Y, fVector X, ui size, int ipow, float A, float B, float C );
  296.  
  297. int  __vf    VF_ipow2(  fVector Y, iVector X, ui size );
  298. int  __vf    VF_ipow10( fVector Y, iVector X, ui size );
  299.                           /* ipow2 and ipow10: integer powers of 2 and 10 */
  300.  
  301. int  __vf   VF_pow(    fVector Y, fVector X, ui size, float expo );
  302. int  __vf   VFx_pow(   fVector Y, fVector X, ui size, float expo, float A, float B, float C );
  303.  
  304. int  __vf   VF_pow2(   fVector Y, fVector X, ui size );
  305. int  __vf   VFx_pow2(  fVector Y, fVector X, ui size, float A, float B, float C );
  306. int  __vf   VF_pow10(  fVector Y, fVector X, ui size );
  307. int  __vf   VFx_pow10( fVector Y, fVector X, ui size, float A, float B, float C );
  308.             /* pow2 and pow10: basis 2 or 10 raised to power x */
  309.  
  310. int  __vf   VF_sqrt(  fVector Y, fVector X, ui size );
  311. int  __vf   VFx_sqrt( fVector Y, fVector X, ui size, float A, float B, float C );
  312.  
  313. int  __vf   VF_log(    fVector Y, fVector X, ui size );
  314. int  __vf   VF_log2(   fVector Y, fVector X, ui size );
  315. int  __vf   VF_log10(  fVector Y, fVector X, ui size );
  316. #define     VF_ln      VF_log
  317. int  __vf   VFx_log(   fVector Y, fVector X, ui size, float A, float B, float C );
  318. int  __vf   VFx_log2(  fVector Y, fVector X, ui size, float A, float B, float C );
  319. int  __vf   VFx_log10( fVector Y, fVector X, ui size, float A, float B, float C );
  320. #define     VFx_ln     VFx_log
  321.  
  322. int  __vf   VF_OD( fVector OD, fVector X, fVector X0, ui size );  /* OD = log10( X0/X ) */
  323. int  __vf   VF_ODwDark( fVector OD, fVector X, fVector XDark,
  324.                         fVector X0, fVector X0Dark, ui size );
  325. void __vf   VF_setODThresh( float minX, float minX0 );
  326.  
  327. int  __vf   VF_exp(   fVector Y, fVector X, ui size );
  328. int  __vf   VFx_exp(  fVector Y, fVector X, ui size, float A, float B, float C );
  329. int  __vf   VF_expArbBase(  fVector Y, fVector X, ui size, float Base );
  330. int  __vf   VFx_expArbBase( fVector Y, fVector X, ui size, float Base,
  331.                             float A, float B, float C );
  332. int  __vf   VF_expc(  fVector Y, fVector X, ui size );
  333. int  __vf   VFx_expc( fVector Y, fVector X, ui size, float A, float B, float C );
  334.                 /* expc(x) = 1 - exp(x)  */
  335. int  __vf   VF_expmx2(  fVector Y, fVector X, ui size );
  336. int  __vf   VFx_expmx2( fVector Y, fVector X, ui size, float A, float B, float C );
  337.                 /* expmx2(x) = exp( -x**2 )  */
  338. int  __vf   VF_exp2(  fVector Y, fVector X, ui size );
  339. int  __vf   VFx_exp2( fVector Y, fVector X, ui size, float A, float B, float C );
  340. int  __vf   VF_exp10(  fVector Y, fVector X, ui size );
  341. int  __vf   VFx_exp10( fVector Y, fVector X, ui size, float A, float B, float C );
  342.                 /*  exp2 and exp10 used as synonyms for pow2 and pow10 */
  343.  
  344. int  __vf   VF_erf(     fVector Y, fVector X, ui size );
  345. int  __vf   VFx_erf(    fVector Y, fVector X, ui size, float A, float B, float C );
  346. int  __vf   VF_erfc(    fVector Y, fVector X, ui size );
  347. int  __vf   VFx_erfc(   fVector Y, fVector X, ui size, float A, float B, float C );
  348. int  __vf   VF_Gauss(   fVector Y, fVector X, ui size, float Wid, float Cent, float C );
  349. #define VF_gauss VF_Gauss
  350. int  __vf   VF_Lorentz( fVector Y, fVector X, ui size, float Wid, float Cent, float C );
  351. #define VF_lorentz VF_Lorentz
  352.  
  353. int  __vf   VF_sin(     fVector Y, fVector X, ui size );
  354. int  __vf   VFx_sin(    fVector Y, fVector X, ui size, float A, float B, float C );
  355. int  __vf   VF_cos(     fVector Y, fVector X, ui size );
  356. int  __vf   VFx_cos(    fVector Y, fVector X, ui size, float A, float B, float C );
  357. int  __vf   VF_sincos(  fVector Sin, fVector Cos, fVector X, ui size );
  358. int  __vf   VFx_sincos( fVector Sin, fVector Cos, fVector X, ui size, float A, float B, float C );
  359.  
  360. int  __vf   VF_tan(     fVector Y, fVector X, ui size );
  361. int  __vf   VFx_tan(    fVector Y, fVector X, ui size, float A, float B, float C );
  362. int  __vf   VF_cot(     fVector Y, fVector X, ui size );
  363. int  __vf   VFx_cot(    fVector Y, fVector X, ui size, float A, float B, float C );
  364.  
  365. int  __vf   VF_sec(     fVector Y, fVector X, ui size );
  366. int  __vf   VFx_sec(    fVector Y, fVector X, ui size, float A, float B, float C );
  367. int  __vf   VF_cosec(   fVector Y, fVector X, ui size );
  368. int  __vf   VFx_cosec(  fVector Y, fVector X, ui size, float A, float B, float C );
  369.  
  370. int  __vf   VF_sin2(    fVector Y, fVector X, ui size );
  371. int  __vf   VFx_sin2(   fVector Y, fVector X, ui size, float A, float B, float C );
  372. int  __vf   VF_cos2(    fVector Y, fVector X, ui size );
  373. int  __vf   VFx_cos2(   fVector Y, fVector X, ui size, float A, float B, float C );
  374. int  __vf   VF_sincos2( fVector Sin, fVector Cos, fVector X, ui size );
  375. int  __vf   VFx_sincos2( fVector Sin, fVector Cos, fVector X, ui size, float A, float B, float C );
  376.  
  377. int  __vf   VF_tan2(     fVector Y, fVector X, ui size );
  378. int  __vf   VFx_tan2(    fVector Y, fVector X, ui size, float A, float B, float C );
  379. int  __vf   VF_cot2(     fVector Y, fVector X, ui size );
  380. int  __vf   VFx_cot2(    fVector Y, fVector X, ui size, float A, float B, float C );
  381. int  __vf   VF_sec2(     fVector Y, fVector X, ui size );
  382. int  __vf   VFx_sec2(    fVector Y, fVector X, ui size, float A, float B, float C );
  383. int  __vf   VF_cosec2(   fVector Y, fVector X, ui size );
  384. int  __vf   VFx_cosec2(  fVector Y, fVector X, ui size, float A, float B, float C );
  385.  
  386.  /*  reduced-range sine and cosine for -2Pi <= x <= +2Pi */
  387. int  __vf   VFr_sin(     fVector Y, fVector X, ui size );
  388. int  __vf   VFrx_sin(    fVector Y, fVector X, ui size, float A, float B, float C );
  389. int  __vf   VFr_cos(     fVector Y, fVector X, ui size );
  390. int  __vf   VFrx_cos(    fVector Y, fVector X, ui size, float A, float B, float C );
  391. int  __vf   VFr_sincos(  fVector Sin, fVector Cos, fVector X, ui size );
  392. int  __vf   VFrx_sincos( fVector Sin, fVector Cos, fVector X, ui size, float A, float B, float C );
  393. int  __vf   VFr_sin2(     fVector Y, fVector X, ui size );
  394. int  __vf   VFrx_sin2(    fVector Y, fVector X, ui size, float A, float B, float C );
  395. int  __vf   VFr_cos2(     fVector Y, fVector X, ui size );
  396. int  __vf   VFrx_cos2(    fVector Y, fVector X, ui size, float A, float B, float C );
  397. int  __vf   VFr_sincos2(  fVector Sin, fVector Cos, fVector X, ui size );
  398. int  __vf   VFrx_sincos2( fVector Sin, fVector Cos, fVector X, ui size, float A, float B, float C );
  399.  
  400. /* trigonometric functions of rational multiples of Pi: x = p/q * Pi */
  401. int  __vf   VF_sinrpi(   fVector Y, iVector P, ui size, int q );
  402. int  __vf   VF_cosrpi(   fVector Y, iVector P, ui size, int q );
  403. int  __vf   VF_sincosrpi( fVector Sin, fVector Cos, iVector P, ui size, int q );
  404. int  __vf   VF_tanrpi(   fVector Y, iVector P, ui size, int q );
  405. int  __vf   VF_cotrpi(   fVector Y, iVector P, ui size, int q );
  406. int  __vf   VF_secrpi(   fVector Y, iVector P, ui size, int q );
  407. int  __vf   VF_cosecrpi( fVector Y, iVector P, ui size, int q );
  408.  
  409. int  __vf   VF_sinrpi2(  fVector Y, iVector P, ui size, int q );
  410. int  __vf   VF_cosrpi2(  fVector Y, iVector P, ui size, int q );
  411. int  __vf   VF_sincosrpi2( fVector Sin, fVector Cos, iVector P, ui size, int q );
  412. int  __vf   VF_tanrpi2(  fVector Y, iVector P, ui size, int q );
  413. int  __vf   VF_cotrpi2(  fVector Y, iVector P, ui size, int q );
  414. int  __vf   VF_secrpi2(  fVector Y, iVector P, ui size, int q );
  415. int  __vf   VF_cosecrpi2( fVector Y, iVector P, ui size, int q );
  416.  
  417. int  __vf   VF_sinrpi3(  fVector Y, iVector P, ui size, int q );
  418. int  __vf   VF_cosrpi3(  fVector Y, iVector P, ui size, int q );
  419. int  __vf   VF_sincosrpi3( fVector Sin, fVector Cos, iVector P, ui size, int q );
  420. int  __vf   VF_tanrpi3(  fVector Y, iVector P, ui size, int q );
  421. int  __vf   VF_cotrpi3(  fVector Y, iVector P, ui size, int q );
  422. int  __vf   VF_secrpi3(  fVector Y, iVector P, ui size, int q );
  423. int  __vf   VF_cosecrpi3( fVector Y, iVector P, ui size, int q );
  424.  
  425. int  __vf   VF_sinc(     fVector Y, fVector X, ui size );
  426. int  __vf   VFx_sinc(    fVector Y, fVector X, ui size, float A, float B, float C );
  427. int  __vf   VF_Kepler(   fVector Y, fVector X, ui size, float T, float e );
  428. int  __vf   VFx_Kepler(  fVector Y, fVector X, ui size, float T, float e,
  429.                          float A, float B );
  430. #define VF_kepler  VF_Kepler
  431. #define VFx_kepler VFx_Kepler
  432.  
  433. int  __vf   VF_asin(    fVector Y, fVector X, ui size );
  434. int  __vf   VFx_asin(   fVector Y, fVector X, ui size, float A, float B, float C );
  435. int  __vf   VF_acos(    fVector Y, fVector X, ui size );
  436. int  __vf   VFx_acos(   fVector Y, fVector X, ui size, float A, float B, float C );
  437. int  __vf   VF_atan(    fVector Y, fVector X, ui size );
  438. int  __vf   VFx_atan(   fVector Y, fVector X, ui size, float A, float B, float C );
  439. int  __vf   VF_atan2(   fVector Z, fVector X, fVector Y, ui size );
  440. int  __vf   VFx_atan2(  fVector Z, fVector X, fVector Y, ui size, float A, float B, float C );
  441.  
  442. int  __vf   VF_sinh(    fVector Y, fVector X, ui size );
  443. int  __vf   VFx_sinh(   fVector Y, fVector X, ui size, float A, float B, float C );
  444. int  __vf   VF_cosh(    fVector Y, fVector X, ui size );
  445. int  __vf   VFx_cosh(   fVector Y, fVector X, ui size, float A, float B, float C );
  446. int  __vf   VF_tanh(    fVector Y, fVector X, ui size );
  447. int  __vf   VFx_tanh(   fVector Y, fVector X, ui size, float A, float B, float C );
  448. int  __vf   VF_coth(    fVector Y, fVector X, ui size );
  449. int  __vf   VFx_coth(   fVector Y, fVector X, ui size, float A, float B, float C );
  450. int  __vf   VF_sech(    fVector Y, fVector X, ui size );
  451. int  __vf   VFx_sech(   fVector Y, fVector X, ui size, float A, float B, float C );
  452. int  __vf   VF_cosech(  fVector Y, fVector X, ui size );
  453. int  __vf   VFx_cosech( fVector Y, fVector X, ui size, float A, float B, float C );
  454. int  __vf   VF_sech2(   fVector Y, fVector X, ui size );
  455. int  __vf   VFx_sech2(  fVector Y, fVector X, ui size, float A, float B, float C );
  456.  
  457. #ifdef __cplusplus
  458. }
  459. #endif
  460.  
  461.  
  462. #endif /* __VFMATH_H */
  463.